
#ifndef _ALITTLE_ENTITYSYSTEM_H_
#define _ALITTLE_ENTITYSYSTEM_H_

#include <SDL2/SDL.h>
#include <SDL2/SDL_opengl.h>
#include <string>

#include "CommonEntity.h"
#include "CommonEntities.h"

namespace ALittle
{

class EntitySystem
{
public:
	static EntitySystem& Instance();

public:
	void Setup();
	void Shutdown();
	void RegisterToScript();

public:
	void Render();

public:
	void AddChild(CommonEntity* entity);
	void RemoveChild(CommonEntity* entity);

private:
	void PushProjection();

private:
	CommonEntities m_entity_list;

private:
	EntitySystem();
	~EntitySystem();
};

} // ALittle

#define g_EntitySystem ALittle::EntitySystem::Instance()

#endif // _ALITTLE_ENTITYSYSTEM_H_
